// 一只青蛙一次可以跳上1级台阶，也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

// 答案需要取模 1e9+7（1000000007），如计算初始结果为：1000000008，请返回 1。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

#include<bits/stdc++.h>
using namespace std;


// 动态规划

// 与fib差不多，空间可以优化，使用3个变量就够了，能从6.2->5.9左右

// 执行用时：
// 0 ms
// , 在所有 C++ 提交中击败了
// 100.00%
// 的用户
// 内存消耗：
// 6.2 MB
// , 在所有 C++ 提交中击败了
// 13.85%
// 的用户

class Solution {
public:
    int numWays(int n) {
        if(n<2){
            return 1;
        }
        vector<int> dp(n+1,0);
        dp[0] =1;
        dp[1] =1;
        for(int i=2;i<n+1;i++){
            dp[i] = dp[i-1] + dp[i-2];
            dp[i] = dp[i]%1000000007;
        }
        return dp[n];
    }

};